<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
/*
    Author : Arian Ichsan - 23509027
    Controller dari Reservasi Ruangan (untuk melakukan reservasi ruangan untuk suatu kegiatan)
*/
include 'page/abstractPage.php';

class ServerReservasiRuangan extends AbstractPage {

    private $data;
    private $action='';
    private $message='';

    public function ServerReservasiRuangan()
    {
        parent::__construct();
        $this->load->model('Kegiatan');
        $this->load->model('KegiatanNonRutin');
        $this->load->model('JenisKegiatan');
        $this->load->model('Ruangan');

        //membuat template tabel
        $tmpl = array (
                    'table_open'          => '<table border="1" cellpadding="4" cellspacing="0" class="table1">',

                    'heading_row_start'   => '<tr>',
                    'heading_row_end'     => '</tr>',
                    'heading_cell_start'  => '<th>',
                    'heading_cell_end'    => '</th>',

                    'row_start'           => '<tr>',
                    'row_end'             => '</tr>',
                    'cell_start'          => '<td>',
                    'cell_end'            => '</td>',

                    'row_alt_start'       => '<tr>',
                    'row_alt_end'         => '</tr>',
                    'cell_alt_start'      => '<td>',
                    'cell_alt_end'        => '</td>',

                    'table_close'         => '</table>'
              );
        $this->table->set_template($tmpl);
    }

    public function indexReservasiRuangan()
    {
        $this->action='index';

        //ambil userID pengguna untuk menampilkan data kegiatan yang merupakan tanggung jawab si userID
        $session_pengguna=$this->session->userdata('pengguna');
        $userID = $session_pengguna['userID']; //TODO: UBAH jadi userid
        //print_r($this->session->userdata('pengguna'));

        //Build tabel data reservasi
        $hasil=$this->Kegiatan->getAllKegiatan($userID);

        $this->table->set_heading('Aktivitas','Ruangan','Tipe Kegiatan','Hari','Tanggal Mulai','Tanggal Selesai','Waktu Mulai','WaktuSelesai', 'Status','PJ Kegiatan', 'Aksi');

        foreach ($hasil as $row)
        {
            $linkTambahPeserta = "";
            if ($row->status==0)
                $status="Reserved";
            else if ($row->status==1){
                $linkTambahPeserta = anchor('ServerMengundangPengguna/add/'.$row->activityID,'Edit Peserta');
                $status="Approved";
            }
            else if ($row->status==2)
                $status="Done";
            else if ($row->status==3)
                $status="Rejected";

            if ($row->startDate == $row->endDate)
                $this->table->add_row($row->activityName,$row->roomID,$row->typeID,$row->day, date('d-m-Y',strtotime($row->startDate)),date('d-m-Y',strtotime($row->endDate)),$row->startTime, $row->endTime, $status,$row->pjKegiatan,anchor('ServerReservasiRuangan/editReservasiKegiatanInsidental/'.$row->activityID,'Edit Kegiatan')." | ". $linkTambahPeserta);
            else
                $this->table->add_row($row->activityName,$row->roomID,$row->typeID,$row->day, date('d-m-Y',strtotime($row->startDate)),date('d-m-Y',strtotime($row->endDate)),$row->startTime, $row->endTime, $status,$row->pjKegiatan,anchor('ServerReservasiRuangan/editReservasiKegiatanRutin/'.$row->activityID,'Edit Kegiatan')." | ". $linkTambahPeserta);
        }
        $tabelKegiatan=$this->table->generate();

        $this->data = array (
            'linkMemesanRuanganUntukKegiatanRutin' => anchor("ServerReservasiRuangan/memesanRuanganUntukKegiatanRutin","Reservasi Ruangan Untuk Kegiatan Rutin"),
            'linkMemesanRuanganUntukKegiatanInsidental' => anchor("ServerReservasiRuangan/memesanRuanganUntukKegiatanInsidental","Reservasi Ruangan Untuk Kegiatan Insidental"),
            'tabelKegiatan' => $tabelKegiatan,
            'pesan' => $this->message,
        );

        $this->index();
    }

    public function ajaxGetPilihanRuanganInsidental()
    {
        //print_r($_POST);
        //Ambil tanggal mulai dan tanggal selesai
        $tanggalMulai= $this->input->post('tanggalMulai');
        $tanggalSelesai=$tanggalMulai; //input input ke basis data
        $hari=$this->convertTanggalKeHari($tanggalMulai); // Contoh : 01-05-2011->Sunday -> return Minggu

        $this->load->model('Ruangan');
        $this->load->model('Kegiatan');

        //Algoritma untuk mengambil ruangan yang available(tidak dalam status reserved atau approved oleh suatu kegiatan (?0/1/2/3?)) pada jangka waktu tertentu
        //1. Ambil Semua Ruangan
        $arrayRuangan=$this->Ruangan->getAllRuangan(); //array of object ruangan(roomID,roomName,description,pjRuangan,parentRoom)
        $arrayRuanganID=array(); //ambil id nya saja dari arrayRuangan supaya dapat dipanggil pada fungsi array_diff()
        foreach ($arrayRuangan as $row)
        {
            array_push($arrayRuanganID,$row->roomID);
        }
        $arrayRuanganIDNotAvailable = array(); // bila nanti ternyata ada ruangan tidak available (sudah dibook kegiatan nonrutin lain) maka akan dipush ke array ini

        //2. Ambil semua ruanganID yang bentrok
        foreach ($arrayRuangan as $row)
        {
            $hasilQuery=$this->Kegiatan->getRoomStatus($row->roomID,$hari,$tanggalMulai,$tanggalSelesai,$this->input->post('waktuMulai'),$this->input->post('waktuSelesai')); //mengambil semua row yang bentrok
//        echo "Kegiatan Rutin Yang Bentrok : <br />";
//        print_r($hasilQuery);
//        echo "<br />";
            if (count($hasilQuery)>0) //kalau ternyata ada yang bentrok
            {
                if ($hasilQuery[0]->activityID!=$this->input->post('activityID')) //kecualikan hasil query yang activityIDnya sedang diedit
                    array_push ($arrayRuanganIDNotAvailable, $row->roomID); //masukkan objek ruangan ke array
            }
        }

        $arrayRuanganIDAvailable=array_diff($arrayRuanganID, $arrayRuanganIDNotAvailable);
        //print_r($arrayRuanganIDAvailable);

        $arrayObjectRuanganAvailable=array();
        foreach ($arrayRuanganIDAvailable as $idRuanganAvailable) //ambil objek Ruangan berdasarkan ID
        {
            $query = $this->Ruangan->getRuangan($idRuanganAvailable);
            $objekRuangan = $query;
            array_push($arrayObjectRuanganAvailable,$objekRuangan);
        }
        //print_r($arrayObjectRuanganAvailable); //untuk cek apakah objek ruangan available sudah terisi?

        //membuat content tabel
        $this->table->set_heading('Ruangan', 'Deskripsi', 'Penanggung Jawab','Pilihan'); //header
        foreach ($arrayObjectRuanganAvailable as $objekRuangan) //build row tabel dari objek ruangan yang available
        {
            if ($objekRuangan->roomID == $this->input->post('currentRoomID') )
                $isChecked=true;
            else
                $isChecked=false;
            $this->table->add_row(array($objekRuangan->roomName,$objekRuangan->description,$objekRuangan->pjRuangan, form_radio('pilihan',$objekRuangan->roomID,$isChecked)));
        }
        echo "Ruangan yang tersedia : ";
        echo "<div class='scroll-pilihan-kegiatan'>";
        echo $this->table->generate();
        echo "</div>";
        echo "<br />";

        //Kirimkan button submit atau edit
        if ($this->input->post('aksi')=='add')
            echo form_submit('submitDataReservasiNonRutin', 'Submit data reservasi', 'class=f-submit');
        else if ($this->input->post('aksi')=='edit')
            echo form_submit('editDataReservasiNonRutin', 'Submit hasil perubahan','class=f-submit' );
        else
            echo 'Error in ajax';
    }

    public function ajaxGetPilihanRuanganRutin()
    {
        //print_r($_POST);
        //Ambil tanggal mulai dan tanggal selesai
        $tanggalMulai= $this->input->post('tanggalMulai');
        $tanggalSelesai=$this->input->post('tanggalSelesai');

        $this->load->model('Ruangan');
        $this->load->model('Kegiatan');

        //Algoritma untuk mengambil ruangan yang available(tidak dalam status reserved atau approved oleh suatu kegiatan (?0/1/2/3?)) pada jangka waktu tertentu
        //1. Ambil Semua Ruangan
        $arrayRuangan=$this->Ruangan->getAllRuangan(); //array of object ruangan(roomID,roomName,description,pjRuangan,parentRoom)
        $arrayRuanganID=array(); //ambil id nya saja dari arrayRuangan supaya dapat dipanggil pada fungsi array_diff()
        foreach ($arrayRuangan as $row)
        {
            array_push($arrayRuanganID,$row->roomID);
        }
        $arrayRuanganIDNotAvailable = array(); // bila nanti ternyata ada ruangan tidak available (sudah dibook kegiatan nonrutin lain) maka akan dipush ke array ini

        //2. Ambil semua ruanganID yang bentrok
        foreach ($arrayRuangan as $row)
        {
            if ($this->input->post('seninMulai')) //cek untuk setiap input hari yang mungkin dicentang
            {
                $hari="Senin";
                $hasilQuery=$this->Kegiatan->getRoomStatus($row->roomID,$hari,$tanggalMulai,$tanggalSelesai,$this->input->post('seninMulai'),$this->input->post('seninSelesai')); //mengambil semua row yang bentrok
                if (count($hasilQuery)>0) //kalau ternyata ada yang bentrok
                {
                    if ($hasilQuery[0]->activityID!=$this->input->post('activityID')) //kecualikan hasil query yang activityIDnya sedang diedit
                        array_push ($arrayRuanganIDNotAvailable, $row->roomID); //masukkan objek ruangan ke array
                }
            }
            if ($this->input->post('selasaMulai')) //cek untuk setiap input hari yang mungkin dicentang
            {
                $hari="Selasa";
                $hasilQuery=$this->Kegiatan->getRoomStatus($row->roomID,$hari,$tanggalMulai,$tanggalSelesai,$this->input->post('selasaMulai'),$this->input->post('selasaSelesai')); //mengambil semua row yang bentrok
                if (count($hasilQuery)>0) //kalau ternyata ada yang bentrok
                {
                    if ($hasilQuery[0]->activityID!=$this->input->post('activityID')) //kecualikan hasil query yang activityIDnya sedang diedit
                        array_push ($arrayRuanganIDNotAvailable, $row->roomID); //masukkan objek ruangan ke array
                }
            }
            if ($this->input->post('rabuMulai')) //cek untuk setiap input hari yang mungkin dicentang
            {
                $hari="Rabu";
                $hasilQuery=$this->Kegiatan->getRoomStatus($row->roomID,$hari,$tanggalMulai,$tanggalSelesai,$this->input->post('rabuMulai'),$this->input->post('rabuSelesai')); //mengambil semua row yang bentrok
                if (count($hasilQuery)>0) //kalau ternyata ada yang bentrok
                {
                    if ($hasilQuery[0]->activityID!=$this->input->post('activityID')) //kecualikan hasil query yang activityIDnya sedang diedit
                        array_push ($arrayRuanganIDNotAvailable, $row->roomID); //masukkan objek ruangan ke array
                }
            }
            if ($this->input->post('kamisMulai')) //cek untuk setiap input hari yang mungkin dicentang
            {
                $hari="Kamis";
                $hasilQuery=$this->Kegiatan->getRoomStatus($row->roomID,$hari,$tanggalMulai,$tanggalSelesai,$this->input->post('kamisMulai'),$this->input->post('kamisSelesai')); //mengambil semua row yang bentrok
                if (count($hasilQuery)>0) //kalau ternyata ada yang bentrok
                {
                    if ($hasilQuery[0]->activityID!=$this->input->post('activityID')) //kecualikan hasil query yang activityIDnya sedang diedit
                        array_push ($arrayRuanganIDNotAvailable, $row->roomID); //masukkan objek ruangan ke array
                }
            }
            if ($this->input->post('jumatMulai')) //cek untuk setiap input hari yang mungkin dicentang
            {
                $hari="Jumat";
                $hasilQuery=$this->Kegiatan->getRoomStatus($row->roomID,$hari,$tanggalMulai,$tanggalSelesai,$this->input->post('jumatMulai'),$this->input->post('jumatSelesai')); //mengambil semua row yang bentrok
                if (count($hasilQuery)>0) //kalau ternyata ada yang bentrok
                {
                    if ($hasilQuery[0]->activityID!=$this->input->post('activityID')) //kecualikan hasil query yang activityIDnya sedang diedit
                        array_push ($arrayRuanganIDNotAvailable, $row->roomID); //masukkan objek ruangan ke array
                }
            }
            if ($this->input->post('sabtuMulai')) //cek untuk setiap input hari yang mungkin dicentang
            {
                $hari="Sabtu";
                $hasilQuery=$this->Kegiatan->getRoomStatus($row->roomID,$hari,$tanggalMulai,$tanggalSelesai,$this->input->post('sabtuMulai'),$this->input->post('sabtuSelesai')); //mengambil semua row yang bentrok
                if (count($hasilQuery)>0) //kalau ternyata ada yang bentrok
                {
                    if ($hasilQuery[0]->activityID!=$this->input->post('activityID')) //kecualikan hasil query yang activityIDnya sedang diedit
                        array_push ($arrayRuanganIDNotAvailable, $row->roomID); //masukkan objek ruangan ke array
                }
            }
            if ($this->input->post('mingguMulai')) //cek untuk setiap input hari yang mungkin dicentang
            {
                $hari="Minggu";
                $hasilQuery=$this->Kegiatan->getRoomStatus($row->roomID,$hari,$tanggalMulai,$tanggalSelesai,$this->input->post('mingguMulai'),$this->input->post('mingguSelesai')); //mengambil semua row yang bentrok
                if (count($hasilQuery)>0) //kalau ternyata ada yang bentrok
                {
                    if ($hasilQuery[0]->activityID!=$this->input->post('activityID')) //kecualikan hasil query yang activityIDnya sedang diedit
                        array_push ($arrayRuanganIDNotAvailable, $row->roomID); //masukkan objek ruangan ke array
                }
            }
        }

        $arrayRuanganIDAvailable=array_diff($arrayRuanganID, $arrayRuanganIDNotAvailable);
        //print_r($arrayRuanganIDAvailable);

        $arrayObjectRuanganAvailable=array();
        foreach ($arrayRuanganIDAvailable as $idRuanganAvailable) //ambil objek Ruangan berdasarkan ID
        {
            $query = $this->Ruangan->getRuangan($idRuanganAvailable);
            $objekRuangan = $query;
            array_push($arrayObjectRuanganAvailable,$objekRuangan);
        }
        //print_r($arrayObjectRuanganAvailable); //untuk cek apakah objek ruangan available sudah terisi?

        //membuat content tabel
        $this->table->set_heading('Ruangan', 'Deskripsi', 'Penanggung Jawab','Pilihan'); //header
        foreach ($arrayObjectRuanganAvailable as $objekRuangan) //build row tabel dari objek ruangan yang available
        {
            if ($objekRuangan->roomID == $this->input->post('currentRoomID') )
                $isChecked=true;
            else
                $isChecked=false;
            $this->table->add_row(array($objekRuangan->roomName,$objekRuangan->description,$objekRuangan->pjRuangan, form_radio('pilihan',$objekRuangan->roomID,$isChecked)));
        }
        echo "Ruangan yang tersedia : ";
        echo "<div class='scroll-pilihan-kegiatan'>";
        echo $this->table->generate();
        echo "</div>";
        echo "<br />";

        //Kirimkan button submit atau edit
        if ($this->input->post('aksi')=='add')
            echo form_submit('submitDataReservasiRutin', 'Submit data reservasi', 'class=f-submit');
        else if ($this->input->post('aksi')=='edit')
            echo form_submit('editDataReservasiRutin', 'Submit hasil perubahan', 'class=f-submit');
        else
            echo 'Error in ajax';
    }

    //Translate penanggalan ke dalam string hari bahasa Indonesia karena string yang disimpan dalam database adalah bahasa Indonesia
    private function convertTanggalKeHari($tanggalMulai)
    {
        $weekday = date('l', strtotime($tanggalMulai));
        switch ($weekday){
            case "Sunday":
                $hari="Minggu";
                break;
            case "Monday":
                $hari="Senin";
                break;
            case "Tuesday":
                $hari="Selasa";
                break;
            case "Wednesday":
                $hari="Rabu";
                break;
            case "Thursday":
                $hari="Kamis";
                break;
            case "Friday":
                $hari="Jumat";
                break;
            case "Saturday":
                $hari="Sabtu";
                break;
            default :
                $hari="Hari tidak terdefinisi";
                break;
        }
        return $hari;
    }

    public function memesanRuanganUntukKegiatanInsidental()
    {
        $this->action="entryDataKegiatanInsidental";

        $jenisKegiatanResult = $this->JenisKegiatan->getAllJenisKegiatan();
        $optionJenisKegiatan=array();
        foreach ($jenisKegiatanResult as $jenisKegiatan)
        {
            $optionJenisKegiatan = $optionJenisKegiatan + array($jenisKegiatan->typeID => $jenisKegiatan->typeName );
        }

        $this->data = array(
            'optionJenisKegiatan'=>$optionJenisKegiatan
        );

        $this->index();
    }

    public function editReservasiKegiatanInsidental($activityID)
    {
        $this->action="editDataKegiatanInsidental";

        $jenisKegiatanResult = $this->JenisKegiatan->getAllJenisKegiatan();
        $optionJenisKegiatan=array();
        foreach ($jenisKegiatanResult as $jenisKegiatan)
        {
            $optionJenisKegiatan = $optionJenisKegiatan + array($jenisKegiatan->typeID => $jenisKegiatan->typeName );
        }

        $row_kegiatan  = $this->Kegiatan->getKegiatan($activityID);
        $this->data= array(
            'row_kegiatan'=>$row_kegiatan,
            'optionJenisKegiatan' =>$optionJenisKegiatan
            );
        $this->index();
    }

    public function submitDataReservasiInsidental()
    {
        //Inputkan ke basis data, tampilkan index+pesan sukses
        //print_r($_POST); //buat tes variabel yang berhasil dikirim ke server
        //1.Parse format tanggal dan waktu dijadikan format YYYY-MM-DD HH:MM
        $arrayTanggalMulai = explode('-', $this->input->post('tanggalMulai'));
        $tanggalMulai = $arrayTanggalMulai[2].'-'.$arrayTanggalMulai[1].'-'.$arrayTanggalMulai[0];
        //echo $tanggalWaktuMulai."<br />";
        $tanggalSelesai = $tanggalMulai;

        $hari=$this->convertTanggalKeHari($tanggalMulai);

        //ambil userID pengguna untuk menampilkan data kegiatan yang merupakan tanggung jawab si userID
        $session_pengguna=$this->session->userdata('pengguna');
        $userID = $session_pengguna['userID']; //TODO: UBAH jadi userid

        //2.Ambil pilihan ruangan lalu cek pjRuangannya siapa (lewat query basis data)
        $pilihanRuanganYangDisubmit = $this->input->post('pilihan');
        $queryRuangan= $this->Ruangan->getRuangan($pilihanRuanganYangDisubmit);

        //3.Cek apakah si user merupakan pjRuangan, bila ya status reservasi adalah 1, bila bukan status reservasi adalah 0
        if ( $userID == $queryRuangan->pjRuangan)
            $status=1;
        else
            $status=0;

        //4. Query insert ke basis data, TODO: insert field jenis kegiatan?
        if ($this->Kegiatan->insertKegiatan($this->input->post('namaKegiatan'),$pilihanRuanganYangDisubmit,$this->input->post('jenisKegiatan') ,$hari,$tanggalMulai,$tanggalSelesai,$this->input->post('waktuMulai'),$this->input->post('waktuSelesai'),$status,$userID) )
            $this->message='<div id="message" class="success">Reservasi ruangan sukses</div>' ;
        else
            $this->message='<div id="message" class="error">Reservasi ruangan gagal ketika insert database</div>' ;

        $this->indexReservasiRuangan();
    }

    public function submitEditDataReservasiInsidental()
    {
        //print_r($_POST); //buat tes variabel yang berhasil dikirim ke server
        //1.Parse format tanggal dan waktu dijadikan format YYYY-MM-DD HH:MM
        $arrayTanggalMulai = explode('-', $this->input->post('tanggalMulai'));
        $tanggalMulai = $arrayTanggalMulai[2].'-'.$arrayTanggalMulai[1].'-'.$arrayTanggalMulai[0];
        $tanggalSelesai=$tanggalMulai;

        $hari=$this->convertTanggalKeHari($tanggalMulai);

        //ambil userID pengguna untuk menampilkan data kegiatan yang merupakan tanggung jawab si userID
        $session_pengguna=$this->session->userdata('pengguna');
        $userID = $session_pengguna['userID']; //TODO: UBAH jadi userid

        //2.Ambil pilihan ruangan lalu cek pjRuangannya siapa (lewat query basis data)
        $pilihanRuanganYangDisubmit = $this->input->post('pilihan');
        $queryRuangan= $this->Ruangan->getRuangan($pilihanRuanganYangDisubmit);

        //3.Cek apakah si user merupakan pjRuangan, bila ya status reservasi adalah 1, bila bukan status reservasi adalah 0
        if ( $userID == $queryRuangan->pjRuangan)
            $status=1;
        else
            $status=0;

        //4. Query insert ke basis data, TODO: insert field jenis kegiatan?
        if ($this->Kegiatan->updateKegiatan($this->input->post('activityID'),$this->input->post('namaKegiatan'),$pilihanRuanganYangDisubmit,$this->input->post('jenisKegiatan'),$hari,$tanggalMulai,$tanggalSelesai,$this->input->post('waktuMulai'),$this->input->post('waktuSelesai'),$status,$userID) )
            $this->message='<div id="message" class="success">Update Reservasi ruangan sukses</div>' ;
        else
            $this->message='<div id="message" class="error">Update Reservasi ruangan gagal ketika insert database</div>' ;

        $this->indexReservasiRuangan();
    }

    public function deleteKegiatanInsidental($activityID)
    {
        if ($this->Kegiatan->deleteKegiatan($activityID))
            $this->message = '<div id="message" class="success">Pembatalan Reservasi ruangan sukses</div>';
        else
            $this->message = '<div id="message" class="error">Pembatalan Reservasi ruangan gagal</div>';
        $this->indexReservasiRuangan();
    }

    public function memesanRuanganUntukKegiatanRutin()
    {
        $this->action="entryDataKegiatanRutin";
        $jenisKegiatanResult = $this->JenisKegiatan->getAllJenisKegiatan();
        $optionJenisKegiatan=array();
        foreach ($jenisKegiatanResult as $jenisKegiatan)
        {
            $optionJenisKegiatan = $optionJenisKegiatan + array($jenisKegiatan->typeID => $jenisKegiatan->typeName );
        }

        $this->data = array(
            'optionJenisKegiatan'=>$optionJenisKegiatan
        );
        $this->index();
    }

    public function editReservasiKegiatanRutin($activityID)
    {
        $this->action="editDataKegiatanRutin";

        $jenisKegiatanResult = $this->JenisKegiatan->getAllJenisKegiatan();
        $optionJenisKegiatan=array();
        foreach ($jenisKegiatanResult as $jenisKegiatan)
        {
            $optionJenisKegiatan = $optionJenisKegiatan + array($jenisKegiatan->typeID => $jenisKegiatan->typeName );
        }

        $row_kegiatan = $this->Kegiatan->getKegiatan($activityID);

        $pilihanHari = array ("Senin"=>"Senin","Selasa"=>"Selasa","Rabu"=>"Rabu","Kamis"=>"Kamis","Jumat"=>"Jumat","Sabtu"=>"Sabtu","Minggu"=>"Minggu");
        $this->data= array(
            'row_kegiatan'=>$row_kegiatan,
            'optionJenisKegiatan' =>$optionJenisKegiatan,
            'pilihanHari' => $pilihanHari
        );
        $this->index();
    }

    public function submitDataReservasiRutin()
    {
        //Inputkan ke basis data, tampilkan index+pesan sukses
        //print_r($_POST); //buat tes variabel yang berhasil dikirim ke server
        //1.Parse format tanggal dan waktu dijadikan format YYYY-MM-DD HH:MM
        $arrayTanggalMulai = explode('-', $this->input->post('tanggalMulai'));
        $tanggalMulai = $arrayTanggalMulai[2].'-'.$arrayTanggalMulai[1].'-'.$arrayTanggalMulai[0];

        $arrayTanggalSelesai = explode('-', $this->input->post('tanggalSelesai'));
        $tanggalSelesai = $arrayTanggalSelesai[2].'-'.$arrayTanggalSelesai[1].'-'.$arrayTanggalSelesai[0];
        
        //ambil userID pengguna untuk menampilkan data kegiatan yang merupakan tanggung jawab si userID
        $session_pengguna=$this->session->userdata('pengguna');
        $userID = $session_pengguna['userID']; //TODO: UBAH jadi userid

        //2.Ambil pilihan ruangan lalu cek pjRuangannya siapa (lewat query basis data)
        $pilihanRuanganYangDisubmit = $this->input->post('pilihan');
        $queryRuangan= $this->Ruangan->getRuangan($pilihanRuanganYangDisubmit);

        //3.Cek apakah si user merupakan pjRuangan, bila ya status reservasi adalah 1, bila bukan status reservasi adalah 0
        if ( $userID == $queryRuangan->pjRuangan)
            $status=1;
        else
            $status=0;

        if ($this->input->post('seninMulai') && $this->input->post('seninSelesai'))
        {
             if ($this->Kegiatan->insertKegiatan($this->input->post('namaKegiatan'),$pilihanRuanganYangDisubmit,$this->input->post("jenisKegiatan"),"Senin",$tanggalMulai,$tanggalSelesai,$this->input->post('seninMulai'),$this->input->post('seninSelesai'),$status,$userID) ==true)
                 $this->message='<div id="message" class="success">Reservasi ruangan sukses</div>' ;
             else
                 $this->message='<div id="message" class="error">Reservasi ruangan gagal ketika insert database</div>' ;
        }

        if ($this->input->post('selasaMulai') && $this->input->post('selasaSelesai'))
        {
             if ($this->Kegiatan->insertKegiatan($this->input->post('namaKegiatan'),$pilihanRuanganYangDisubmit,$this->input->post("jenisKegiatan"),"Selasa",$tanggalMulai,$tanggalSelesai,$this->input->post('selasaMulai'),$this->input->post('selasaSelesai'),$status,$userID) ==true)
                 $this->message='<div id="message" class="success">Reservasi ruangan sukses</div>' ;
             else
                 $this->message='<div id="message" class="error">Reservasi ruangan gagal ketika insert database</div>' ;
        }

        if ($this->input->post('rabuMulai') && $this->input->post('rabuSelesai'))
        {
             if ($this->Kegiatan->insertKegiatan($this->input->post('namaKegiatan'),$pilihanRuanganYangDisubmit,$this->input->post("jenisKegiatan"),"Rabu",$tanggalMulai,$tanggalSelesai,$this->input->post('rabuMulai'),$this->input->post('rabuSelesai'),$status,$userID) ==true)
                 $this->message='<div id="message" class="success">Reservasi ruangan sukses</div>' ;
             else
                 $this->message='<div id="message" class="error">Reservasi ruangan gagal ketika insert database</div>' ;
        }

        if ($this->input->post('kamisMulai') && $this->input->post('kamisSelesai'))
        {
             if ($this->Kegiatan->insertKegiatan($this->input->post('namaKegiatan'),$pilihanRuanganYangDisubmit,$this->input->post("jenisKegiatan"),"Kamis",$tanggalMulai,$tanggalSelesai,$this->input->post('kamisMulai'),$this->input->post('kamisSelesai'),$status,$userID) ==true)
                 $this->message='<div id="message" class="success">Reservasi ruangan sukses</div>' ;
             else
                 $this->message='<div id="message" class="error">Reservasi ruangan gagal ketika insert database</div>' ;
        }

        if ($this->input->post('jumatMulai') && $this->input->post('jumatSelesai'))
        {
             if ($this->Kegiatan->insertKegiatan($this->input->post('namaKegiatan'),$pilihanRuanganYangDisubmit,$this->input->post("jenisKegiatan"),"Jumat",$tanggalMulai,$tanggalSelesai,$this->input->post('jumatMulai'),$this->input->post('jumatSelesai'),$status,$userID) ==true)
                 $this->message='<div id="message" class="success">Reservasi ruangan sukses</div>' ;
             else
                 $this->message='<div id="message" class="error">Reservasi ruangan gagal ketika insert database</div>' ;
        }

        if ($this->input->post('sabtuMulai') && $this->input->post('sabtuSelesai'))
        {
             if ($this->Kegiatan->insertKegiatan($this->input->post('namaKegiatan'),$pilihanRuanganYangDisubmit,$this->input->post("jenisKegiatan"),"Sabtu",$tanggalMulai,$tanggalSelesai,$this->input->post('sabtuMulai'),$this->input->post('sabtuSelesai'),$status,$userID) ==true)
                 $this->message='<div id="message" class="success">Reservasi ruangan sukses</div>' ;
             else
                 $this->message='<div id="message" class="error">Reservasi ruangan gagal ketika insert database</div>' ;
        }

        if ($this->input->post('mingguMulai') && $this->input->post('mingguSelesai'))
        {
             if ($this->Kegiatan->insertKegiatan($this->input->post('namaKegiatan'),$pilihanRuanganYangDisubmit,$this->input->post("jenisKegiatan"),"Minggu",$tanggalMulai,$tanggalSelesai,$this->input->post('mingguMulai'),$this->input->post('mingguSelesai'),$status,$userID) ==true)
                 $this->message='<div id="message" class="success">Reservasi ruangan sukses</div>' ;
             else
                 $this->message='<div id="message" class="error">Reservasi ruangan gagal ketika insert database</div>' ;
        }
        
        $this->indexReservasiRuangan();
    }

    public function submitEditDataReservasiRutin()
    {
        //Inputkan ke basis data, tampilkan index+pesan sukses
        //print_r($_POST); //buat tes variabel yang berhasil dikirim ke server
        //1.Parse format tanggal dan waktu dijadikan format YYYY-MM-DD HH:MM
        $arrayTanggalMulai = explode('-', $this->input->post('tanggalMulai'));
        $tanggalMulai = $arrayTanggalMulai[2].'-'.$arrayTanggalMulai[1].'-'.$arrayTanggalMulai[0];
        //echo $tanggalWaktuMulai."<br />";

        $arrayTanggalSelesai = explode('-', $this->input->post('tanggalSelesai'));
        $tanggalSelesai = $arrayTanggalSelesai[2].'-'.$arrayTanggalSelesai[1].'-'.$arrayTanggalSelesai[0];

        //ambil userID pengguna untuk menampilkan data kegiatan yang merupakan tanggung jawab si userID
        $session_pengguna=$this->session->userdata('pengguna');
        $userID = $session_pengguna['userID']; //TODO: UBAH jadi userid

        //2.Ambil pilihan ruangan lalu cek pjRuangannya siapa (lewat query basis data)
        $pilihanRuanganYangDisubmit = $this->input->post('pilihan');
        $queryRuangan= $this->Ruangan->getRuangan($pilihanRuanganYangDisubmit);

        //3.Cek apakah si user merupakan pjRuangan, bila ya status reservasi adalah 1, bila bukan status reservasi adalah 0
        if ( $userID == $queryRuangan->pjRuangan)
            $status=1;
        else
            $status=0;

//       print_r($_POST);
        //4. Query insert ke basis data, TODO: insert field jenis kegiatan?

             if ($this->Kegiatan->updateKegiatan($this->input->post('activityID'), $this->input->post('namaKegiatan'),$pilihanRuanganYangDisubmit,$this->input->post('jenisKegiatan'),$this->input->post("hari"),$tanggalMulai,$tanggalSelesai,$this->input->post('waktuMulai'),$this->input->post('waktuSelesai'),$status,$userID) ==true)
                 $this->message='<div id="message" class="success">Update Reservasi ruangan sukses</div>' ;
             else
                 $this->message='<div id="message" class="error">Update Reservasi ruangan gagal ketika insert database</div>' ;

        $this->indexReservasiRuangan();
    }

    public function deleteKegiatanRutin($activityID)
    {
        if ($this->Kegiatan->deleteKegiatan($activityID))
            $this->message = '<div id="message" class="success">Pembatalan Reservasi ruangan sukses</div>';
        else
            $this->message = '<div id="message" class="error">Pembatalan Reservasi ruangan gagal</div>';
        $this->indexReservasiRuangan();
    }

    public function mengonfirmasiReservasi()
    {
        $this->action='mengonfirmasiReservasi';
        $session_pengguna=$this->session->userdata('pengguna');
        $userID = $session_pengguna['userID']; //TODO: UBAH jadi userid

        $queryRuangan = $this->Ruangan->getRuanganByPJRuangan($userID);
        //print_r($queryRuangan);

        $arrayTabelKonfirmasi=array(); //variabel untuk menampung string <table> serta isinya

        foreach ($queryRuangan as $ruangan)
        {
            $queryKegiatan=$this->Kegiatan->getAllKegiatanForConfirmation($ruangan->roomID);
            if ($queryKegiatan==null)
                continue;
            //membuat content tabel
            $this->table->set_heading('Kegiatan','Hari','Tanggal','Waktu','Penanggung Jawab Kegiatan','Konfirmasi'); //header
            foreach ($queryKegiatan as $kegiatan)
            {
                $this->table->add_row($kegiatan->activityName,$kegiatan->day,date('d-m-Y',strtotime($kegiatan->startDate))." s.d.".date('d-m-Y',strtotime($kegiatan->endDate)),$kegiatan->startTime."-".$kegiatan->endTime ,$kegiatan->pjKegiatan,anchor("ServerReservasiRuangan/setujuiKonfirmasi/".$kegiatan->activityID,"Setujui")." | ".anchor("ServerReservasiRuangan/tolakKonfirmasi/".$kegiatan->activityID,"Tolak"));
                //print_r($kegiatan);
            }
            array_push($arrayTabelKonfirmasi,"Permintaan reservasi untuk ".$ruangan->roomName."<br />".$this->table->generate()."<br />");
        }
        $this->data = array(
            'arrayTabelKonfirmasi' => $arrayTabelKonfirmasi,
            'message'=>$this->message
        );
//        foreach ($arrayTabelKonfirmasi as $tabel)
//        {
//            echo $tabel;
//        }
        $this->index();
    }

    public function setujuiKonfirmasi($activityID)
    {
        $this->action='mengonfirmasiReservasi';
        if ($this->Kegiatan->updateStatusKegiatan($activityID,1))
             $this->message='<div id="message" class="success">Konfirmasi persetujuan reservasi ruangan sukses</div>' ;
        else
             $this->message='<div id="message" class="error">Konfirmasi persetujuan reservasi ruangan gagal</div>' ;

        $this->mengonfirmasiReservasi();
    }

    public function tolakKonfirmasi($activityID)
    {
        $this->action='mengonfirmasiReservasi';
        if ($this->Kegiatan->updateStatusKegiatan($activityID,3))
             $this->message='<div id="message" class="success">Konfirmasi penolakan reservasi ruangan sukses</div>' ;
        else
             $this->message='<div id="message" class="error">Konfirmasi penolakan reservasi ruangan gagal</div>' ;

        $this->mengonfirmasiReservasi();
    }

    function _buildContent()
    {
        if ($this->action=='index')
        {
            $this->load->view('reservasiruangan/IndexReservasiRuangan',$this->data);
        }
        else if ($this->action=='entryDataKegiatanRutin')
        {
            $this->load->view('reservasiruangan/MemesanRuanganUntukKegiatanRutin',$this->data);
        }
        else if ($this->action=='editDataKegiatanRutin')
        {
            $this->load->view('reservasiruangan/editRuanganUntukKegiatanRutin',$this->data);
        }
        else if ($this->action=='entryDataKegiatanInsidental')
        {
            $this->load->view('reservasiruangan/memesanRuanganUntukKegiatanInsidental',$this->data);
        }
        else if ($this->action=='editDataKegiatanInsidental')
        {
            $this->load->view('reservasiruangan/editRuanganUntukKegiatanInsidental',$this->data);
        }
        else if ($this->action=='mengonfirmasiReservasi')
        {
            $this->load->view('reservasiruangan/mengonfirmasiReservasi',$this->data);
        }
    }
}
